package com.kingsoft.miot.bridge;

//import java.util.LinkedList;
//import java.util.List;
//import java.util.Map;
//
////import com.xiaomi.utils.conf.ApplicationConfig;
//import org.apache.commons.codec.binary.Base64;
//import org.apache.http.NameValuePair;
//import org.apache.http.message.BasicNameValuePair;
//import org.junit.Before;
//import org.junit.Test;
//
//import com.alibaba.fastjson.JSONObject;
//import com.kingsoft.miot.bridge.utils.ECDSAUtil;
//import com.kingsoft.miot.bridge.utils.HttpUtils;
//
//public class ServerToServerControllerSample {
//
//	// 这个之后，会给出正确的host。
//	private static final String host = "https://bridge.io.mi.com";
//
//	private long groupId;
//	private long authUnitId;
//	private String privateKey;
//	private byte[] publicKey;
//
//	@Before
//	public void setUp() {
////		ApplicationConfig.init();
////		groupId = 1525621715298L;
////		authUnitId = 7895308931432704L;
////		privateKey = "MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCDvSz83xyDNakCufwOtpV0Yaz3_XebeTRJFPa6bIDJ3oQ";
////		publicKey = Base64.decodeBase64(
////				"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE27mFHWWKKZJjsuG5lKFBl6KEgnHLZU2T24A-ypDokpRL5BN9bQPWJGkMh9WZON8rd6kSVJSVuU24jiveQ22VAw");
//
//		groupId = 1218L;
//		authUnitId = 17309038516633600L;
//		privateKey = "MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCA96lBvNVypEGE7rNvwrQCXY2rbLcBXXfHALqVsVdsPmA";
//		publicKey = Base64.decodeBase64(
//				"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE27mFHWWKKZJjsuG5lKFBl6KEgnHLZU2T24A-ypDokpRL5BN9bQPWJGkMh9WZON8rd6kSVJSVuU24jiveQ22VAw");
//
//	}
//
//	public static List<NameValuePair> createParams(long groupId, long authUnitId, String privateKey, String method,
//			String uri, String nonce, String data) {
//		List<NameValuePair> params = new LinkedList<>();
//		params.add(new BasicNameValuePair("_nonce", nonce));
//		params.add(new BasicNameValuePair("_groupId", groupId + ""));
//		params.add(new BasicNameValuePair("_authUnitId", authUnitId + ""));
//		params.add(new BasicNameValuePair("_data", data));
//		StringBuilder toSignTextBuilder = new StringBuilder();
//		toSignTextBuilder.append(method).append("&").append(uri).append("&").append(data).append("&").append(nonce);
//		String toSignText = toSignTextBuilder.toString();
//		String sign = ECDSAUtil.signWithStr(toSignText.getBytes(), privateKey);
//		params.add(new BasicNameValuePair("_signature", sign));
//		return params;
//	}
//
//	/**
//	 * 测试echo
//	 */
//	@Test
//	public void testEcho2() {
//
//		String uri = "/bridge/s2s/echo";
//		String url = host + uri;
//		String method = "post".toUpperCase();
//		JSONObject dataValueJson = new JSONObject();
//		String echoStr = "it is echo string";
//		dataValueJson.put("echo", echoStr);
//		String nonceStr = System.currentTimeMillis() + "";
//		List<NameValuePair> params = createParams(groupId, authUnitId, privateKey, method, uri, nonceStr,
//				dataValueJson.toString());
//		String postResult = HttpUtils.sendPost(url, params);
//		System.out.println(postResult);
////		JSONObject jsonObject = new JSONObject(postResult);
////		Assert.assertEquals(0, jsonObject.getInt("code"));
////		Assert.assertEquals(echoStr, jsonObject.getJSONObject("data").getString("echo"));
//	}
//
//	public static void main(String[] args) {
//		new ServerToServerControllerSample().testEcho2();
//	}
//
//	/**
//	 * 使用通过group id， auth unit id，生成一个control unit
//	 */
//	@Test
//	public void testGenerateControlUnitId() {
//		String uri = "/bridge/s2s/controlunit";
//		String url = host + uri;
//		String method = "post".toUpperCase();
//		JSONObject dataValueJson = new JSONObject();
//
//		String nonceStr = System.currentTimeMillis() + "";
//		List<NameValuePair> params = createParams(groupId, authUnitId, privateKey, method, uri, nonceStr,
//				dataValueJson.toString());
//		String postResult = HttpUtils.sendPost(url, params);
//		System.out.println(postResult);
//		JSONObject jsonObject = new JSONObject();
//		Map<String, Object> map = jsonObject.parseObject(postResult, Map.class);
//		Object object = map.get("data");
//		Map<String, Object> map2 = jsonObject.parseObject(object.toString(), Map.class);
//		System.out.println(map2.get("controlUnitId"));
//	}
//
//	/**
//	 * 测试获取所有的controlId
//	 */
////	@Test
//	public void testGetControlunits() {
//		String uri = "/bridge/s2s/controlunits";
//		String url = host + uri;
//		String method = "post".toUpperCase();
//		JSONObject dataValueJson = new JSONObject();
//		dataValueJson.put("cursor", "");
//		dataValueJson.put("limit", 20);
//
//		String nonceStr = System.currentTimeMillis() + "";
//		List<NameValuePair> params = createParams(groupId, authUnitId, privateKey, method, uri, nonceStr,
//				dataValueJson.toString());
//		String postResult = HttpUtils.sendPost(url, params);
//		JSONObject jsonObject = new JSONObject();
//		System.out.println(postResult);
//
//	}
//
//	/**
//	 * 测试添加家庭
//	 */
////	@Test
//	public void testAddHome() {
//		String uri = "/bridge/s2s/room/addhome";
//		String url = host + uri;
//		String method = "post".toUpperCase();
//		JSONObject dataValueJson = new JSONObject();
//		String echoStr = "it is echo string";
//		dataValueJson.put("controlUnitId", 1353500711L);
//		dataValueJson.put("name", "asd324medsdame");
//		String nonceStr = System.currentTimeMillis() + "";
//		List<NameValuePair> params = createParams(groupId, authUnitId, privateKey, method, uri, nonceStr,
//				dataValueJson.toString());
//
//		String postResult = HttpUtils.sendPost(url, params);
//
//		System.out.println(postResult);
//	}
//
//	/**
//	 * 测试添加房间 (homeid-roomid)
//	 */
////	@Test
//	public void testAddRoom() {
//		String uri = "/bridge/s2s/room/addroom";
//		String url = host + uri;
//		String method = "post".toUpperCase();
//		JSONObject dataValueJson = new JSONObject();
//		dataValueJson.put("controlUnitId", 1353500706);
//		dataValueJson.put("homeId", 807001068462L);
//		dataValueJson.put("name", "都市田园-001");
//		String nonceStr = System.currentTimeMillis() + "";
//		List<NameValuePair> params = createParams(groupId, authUnitId, privateKey, method, uri, nonceStr,
//				dataValueJson.toString());
//		String postResult = HttpUtils.sendPost(url, params);
//		System.out.println(postResult);
//	}
//
//	/**
//	 * 添加房间设备
//	 */
////	@Test
//	public void testAddDev() {
//		String uri = "/bridge/s2s/room/adddev";
//		String url = host + uri;
//		String method = "post".toUpperCase();
//		JSONObject dataValueJson = new JSONObject();
//		dataValueJson.put("controlUnitId", 1353500706);
//		dataValueJson.put("roomid", 807001068462L);
//		dataValueJson.put("name", "都市田园-001");
//		String nonceStr = System.currentTimeMillis() + "";
//		List<NameValuePair> params = createParams(groupId, authUnitId, privateKey, method, uri, nonceStr,
//				dataValueJson.toString());
//		String postResult = HttpUtils.sendPost(url, params);
//		System.out.println(postResult);
//	}
//
//	/**
//	 * 获取房间ID
//	 */
////	@Test
//	public void testGetHome() {
//		String uri = "/bridge/s2s/room/gethome";
//		String url = host + uri;
//		String method = "post".toUpperCase();
//		JSONObject dataValueJson = new JSONObject();
//		dataValueJson.put("controlUnitId", 1353500706);
//		dataValueJson.put("homeId", 807001068462L);
//		String nonceStr = System.currentTimeMillis() + "";
//		List<NameValuePair> params = createParams(groupId, authUnitId, privateKey, method, uri, nonceStr,
//				dataValueJson.toString());
//		String postResult = HttpUtils.sendPost(url, params);
//		System.out.println(postResult);
//	}
//
////	@Test
//	public void testGetDeviceList() {
//		String uri = "/bridge/controlunit/devices";
//		String url = host + uri;
//		String method = "GET".toUpperCase();
//		JSONObject dataValueJson = new JSONObject();
//		dataValueJson.put("controlUnitId", 1353500706);
//		String nonceStr = System.currentTimeMillis() + "";
//		List<NameValuePair> params = createParams(groupId, authUnitId, privateKey, method, uri, nonceStr,
//				dataValueJson.toString());
//		String postResult = HttpUtils.sendPost(url, params);
//		System.out.println(postResult);
//	}
//
//}
